using Drill.Extensibility;

namespace Drill.Core
{
    /// <summary>
    /// Represents a source of configuration that is used by 
    /// DrillBits during initialization. 
    /// </summary>
    public class ConfigurationSource : IConfigurationSource
    {
        /// <summary>
        /// Gets or sets the configuration method.
        /// </summary>
        /// <value>The configuration method.</value>
        public DrillBitConfigMethod ConfigurationMethod { get; set; }

        /// <summary>
        /// Gets or sets the configuration object.
        /// </summary>
        /// <value>The configuration object.</value>
        /// <remarks>
        /// The type and value of the <see cref="ConfigurationObject"/> property depends 
        /// on the value of the <see cref="ConfigurationMethod"/> property.
        /// </remarks>
        public object ConfigurationObject { get; set; }

        /// <summary>
        /// Gets or sets the key.
        /// </summary>
        /// <value>The key.</value>
        public string Key { get; set; }
    }
}